home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)ze.d64
/
src.notbasic
< prev
next >
Wrap
Text File
|
2007-03-01
|
2KB
|
113 lines
;
;-------------------------------;
; NOTBASIC ;
; A MODULE FOR COMAL ;
; ;
; BY DICK KLINGENS ;
; ;
; SEP85 ;
; ;
; DUTCH COMAL USERS GROUP ;
;-------------------------------;
;
* =$8009; START MODULE
;
;--CONSTANTS--------------------;
;
FALSE =0
TRUE =1
;
DEFPAG =%01000110 ; 52KB ROM MAP
;
DIS =8 ; CHARACTERS
CR =13
LOWER =14
;
;--VARIABLES--------------------;
;
TEMP =$0055 ; TEMPORARY STORAGE
IND =$00FB ; POINTER FOR PRTEXT
NOREST =$C841 ; NO RESTORE: TRUE=DISABLED
;
;--ROUTINES---------------------;
;
CWRT =$CA06 ; WRITE CHARACTER
SCAN =$FFE4 ; SCAN KEYBOARD
;
;--SIGNAL TYPES-----------------;
;
DISCRD =3 ; BEFORE DISCARD-COMMAND
NEW =4 ; AFTER NEW-COMMAND
BASIC =11 ; BEFORE LEAVING COMAL
;
;--MODULE DESCRIPTION-----------;
;
.BYTE DEFPAG ; MAP
.WORD LEND ; END OF MODULE
.WORD SIGNAL ; SIGNAL ROUTINES
;
.BYTE 0 ; NO PACKAGES
;
SIGNAL CPY #DISCRD ; IF DISCARD THEN
BEQ INCODE ; GOTO INCODE
CPY #NEW ; IF NEW THEN
BEQ INCODE ; GOTO INCODE
CPY #BASIC ; IF BASIC THEN
BEQ INCODE ; GOTO INCODE
RTS ; COMAL
;
INCODE LDA #TRUE
STA NOREST ; NOREST:=TRUE :DISABLE RESTORE
LDA #<TEXT ; .A:=LO TEXT
LDX #>TEXT ; .X:=HI TEXT
JSR PRTEXT ; EXEC PRTEXT
JSR READ ; EXEC READ
LDA #FALSE
STA NOREST ; NOREST=FALSE :ENABLE RESTORE
RTS ; COMAL
;
PRTEXT STA IND ; (IND):=.A :SETUP POINTER
STX IND+1 ; (IND+1):=.X
LDY #0 ; .Y:=0
REPEAT LDA (IND),Y ; READ CHAR
BEQ EOT ; IF END-OF-TEXT THEN GOTO EOT
JSR CWRT ; EXEC CWRT :PRINT CHAR
INY ; .Y:+1
BNE REPEAT
EOT RTS ; RETURN
;
TEXT .BYTE DIS,LOWER
.BYTE 'TYPE CODE: '
.BYTE 0 ; END-OF-TEXT
;
READ LDX #0 ; .X:=0
WAIT STX TEMP ; (TEMP):=.X
SWAIT JSR SCAN ; EXEC SCAN :GET CHAR
BEQ SWAIT ; IF NO-CHAR THEN GOTO SWAIT
LDX TEMP ; .X:=(TEMP)
CMP CODE,X ; IF NOT CODE=X THEN
BNE CDWRNG ; GOTO CDWRNG
INX ; .X:+1
CPX #CODEND-CODE ; IF NOT END-OF-CODE THEN
BNE WAIT ; GOTO WAIT
LDA #<OK
LDX #>OK
JSR PRTEXT ; EXEC PRTEXT :PRINT "OK"
RTS ; RETURN
;
CDWRNG JSR SCAN ; EXEC SCAN :GET CHAR
CMP #CR ; IF NOT <CR> THEN
BNE CDWRNG ; GOTO CDWRNG
LDA #<WRNG
LDX #>WRNG
JSR PRTEXT ; : PRINT "ERROR.."
LOOP JMP LOOP ; ONLY RESET WILL DO
;
CODE .BYTE 'CML80' ; THIS IS THE CODE
CODEND
;
OK .BYTE 'OK',CR,0
WRNG .BYTE 'ERROR IN CODE, RESET',CR,0
;
LEND .END